package com.inspur.cmis.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.inspur.cmis.pojo.User;
import com.inspur.cmis.service.UserService;

/**
 * 用户管理模块
 * 
 * @author ji_zhh
 *
 */
@Controller
public class UserController {
	@Autowired
	private UserService userService;

	@RequestMapping("/getUserInfoList")
	public String getUserInfoList(String memId, String cname, Model model,
			@RequestParam(value = "pn", defaultValue = "1") int pn) {

		// 传递检索条件
		Map<String, String> map = new HashMap<String, String>();
		map.put("memId", memId);
		map.put("cname", cname);

		// 使用分页组件
		PageHelper.startPage(pn, 5);// 启动分页组件，第一个参数：查询的页码 第二个参数：每页显示的记录条数
		// 完成用户检索
		List<User> userList = userService.getUserInfoList(map);
		// 自动进行分页
		PageInfo<User> pageInfo = new PageInfo<User>(userList, userList.size());// 第一参数：要分页的数据
																				// 第二个参数：总记录条数

		// 检索结果
		model.addAttribute("pageInfo", pageInfo);
		// 检索条件值的回显
		model.addAttribute("memId", memId);
		model.addAttribute("cname", cname);

		return "user/userInfo.jsp";
	}

	/**
	 * 批量删除
	 */
	@RequestMapping("/deleteUsers")
	public String deleteUsers(String ids) {

		String strIds[] = ids.split(",");
		int intIds[] = new int[strIds.length];
		for (int i = 0; i < strIds.length; i++) {
			intIds[i] = Integer.parseInt(strIds[i]);
		}

		userService.deleteUsers(intIds);

		return "redirect:getUserInfoList";
	}

	/**
	 * 用户添加
	 */
	@RequestMapping("/userAdd")
	public String userAdd(User user, Model model) {
		user.setMemPass("123456");
		user.setIsenable("T");
		userService.addUser(user);
		model.addAttribute("flag", "1");// 添加成功
		model.addAttribute("member", user);// 值的回显
		return "user/userInfoAdd.jsp";

	}

	/**
	 * 添加时检查姓名是否已经存在
	 * 
	 * @param cname
	 */
	/*
	 * @ResponseBody的作用其实是将java对象转为json格式的数据。
	 * 
	 * @responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后，写入到response对象的body区
	 * ，通常用来返回JSON数据或者是XML数据。
	 * 注意：在使用此注解之后不会再走视图处理器，而是直接将数据写入到输入流中，他的效果等同于通过response对象输出指定格式的数据。
	 */
	@RequestMapping("/checkUser")
	@ResponseBody
	public Map checkUser(String username,Model model) {
		System.out.println("username==" + username);
		List<User> selectUsers = userService.getUserByCname(username);// 查询该用户名重名的记录
		Map map = new HashMap();
		// 已经存在
		if (selectUsers != null && selectUsers.size() >= 1) {
			map.put("msg", "姓名已经存在");
		}
		return map;
	}
	
	/**
	 * 初始化修改界面
	 * @param ids
	 * @param model
	 * @return
	 */
	@RequestMapping("/userInitUpdate")
	public String userInitUpdate(int[] ids,Model model){
		System.out.println("ids[0]="+ids[0]);
		User user=userService.getUserById(ids[0]);
		model.addAttribute("member",user);//修改前的用户信息存放
		return "user/userInfoUpdate.jsp";
	}
	
	@RequestMapping("/userUpdate")
	public String userUpdate(User user){
		userService.updateUser(user);
		return "redirect:getUserInfoList";
	}
	
	
}
